<!DOCTYPE html>
<html>

<head>
    <!--
      If you are serving your web app in a path other than the root, change the
      href value below to reflect the base path you are serving from.

      The path provided below has to start and end with a slash "/" in order for
      it to work correctly.

      For more details:
      * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base

      This is a placeholder for base href that will be replaced by the value of
      the `--base-href` argument provided to `flutter build`.
    -->
    <base href="/webclient/">

    <meta charset="UTF-8">
    <meta content="IE=Edge" http-equiv="X-UA-Compatible">
    <meta name="description" content="Remote Desktop.">

    <!-- iOS meta tags & icons -->
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="apple-mobile-web-app-title" content="RustDesk">
    <link rel="apple-touch-icon" href="icons/Icon-192.png">

    <!-- Favicon -->
    <link rel="icon" type="image/svg+xml" href="favicon.svg"/>

    <title>RustDesk</title>
    <link rel="manifest" href="manifest.json">
    <script src="/webclient-config/index.js"></script>
    <script src="ogvjs-1.8.6/ogv.js"></script>
    <script type="module" crossorigin src="js/dist/index.js"></script>
    <script>
    </script>
    <link rel="modulepreload" href="js/dist/vendor.js">
    <script src="yuv-canvas-1.2.6.js"></script>

    <style>
        .loading {
            display: flex;
            justify-content: center;
            align-items: center;
            margin: 0;
            position: absolute;
            top: 50%;
            left: 50%;
            -ms-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
        }

        .loader {
            border: 16px solid #f3f3f3;
            border-radius: 50%;
            border: 15px solid;
            border-top: 16px solid #024eff;
            border-right: 16px solid white;
            border-bottom: 16px solid #024eff;
            border-left: 16px solid white;
            width: 120px;
            height: 120px;
            -webkit-animation: spin 2s linear infinite;
            animation: spin 2s linear infinite;
        }

        @-webkit-keyframes spin {
            0% {
                -webkit-transform: rotate(0deg);
            }

            100% {
                -webkit-transform: rotate(360deg);
            }
        }

        @keyframes spin {
            0% {
                transform: rotate(0deg);
            }

            100% {
                transform: rotate(360deg);
            }
        }
    </style>

</head>

<body>
<div class="loading">
    <div class="loader"></div>
</div>
<!-- This script installs service_worker.js to provide PWA functionality to
     application. For more information, see:
     https://developers.google.com/web/fundamentals/primers/service-workers -->
<script>
    var serviceWorkerVersion = '1200232272';
    var scriptLoaded = false;

    function loadMainDartJs() {
        if (scriptLoaded) {
            return;
        }
        scriptLoaded = true;
        var scriptTag = document.createElement('script');
        scriptTag.src = 'main.dart.js';
        scriptTag.type = 'application/javascript';
        document.body.append(scriptTag);
    }

    if ('serviceWorker' in navigator) {
        // Service workers are supported. Use them.
        window.addEventListener('load', function () {
            // Wait for registration to finish before dropping the <script> tag.
            // Otherwise, the browser will load the script multiple times,
            // potentially different versions.
            var serviceWorkerUrl = 'flutter_service_worker.js?v=' + serviceWorkerVersion;
            navigator.serviceWorker.register(serviceWorkerUrl)
                .then((reg) => {
                    function waitForActivation(serviceWorker) {
                        serviceWorker.addEventListener('statechange', () => {
                            if (serviceWorker.state == 'activated') {
                                console.log('Installed new service worker.');
                                loadMainDartJs();
                            }
                        });
                    }

                    if (!reg.active && (reg.installing || reg.waiting)) {
                        // No active web worker and we have installed or are installing
                        // one for the first time. Simply wait for it to activate.
                        waitForActivation(reg.installing || reg.waiting);
                    } else if (!reg.active.scriptURL.endsWith(serviceWorkerVersion)) {
                        // When the app updates the serviceWorkerVersion changes, so we
                        // need to ask the service worker to update.
                        console.log('New service worker available.');
                        reg.update();
                        waitForActivation(reg.installing);
                    } else {
                        // Existing service worker is still good.
                        console.log('Loading app from service worker.');
                        loadMainDartJs();
                    }
                });

            // If service worker doesn't succeed in a reasonable amount of time,
            // fallback to plaint <script> tag.
            setTimeout(() => {
                if (!scriptLoaded) {
                    console.warn(
                        'Failed to load app from service worker. Falling back to plain <script> tag.',
                    );
                    loadMainDartJs();
                }
            }, 4000);
        });
    } else {
        // Service workers not supported. Just drop the <script> tag.
        loadMainDartJs();
    }
</script>
<script src="libs/firebase-app.js?8.10.1"></script>
<script src="libs/firebase-analytics.js?8.10.1"></script>

<script>
    // Your web app's Firebase configuration
    // For Firebase JS SDK v7.20.0 and later, measurementId is optional
    const firebaseConfig = {
        apiKey: "AIzaSyCgehIZk1aFP0E7wZtYRRqrfvNiNAF39-A",
        authDomain: "rustdesk.firebaseapp.com",
        databaseURL: "https://rustdesk.firebaseio.com",
        projectId: "rustdesk",
        storageBucket: "rustdesk.appspot.com",
        messagingSenderId: "768133699366",
        appId: "1:768133699366:web:d50faf0792cb208d7993e7",
        measurementId: "G-9PEH85N6ZQ"
    };

    // Initialize Firebase
    firebase.initializeApp(firebaseConfig);
    firebase.analytics();
</script>
</body>

</html>
